<?php 

namespace utils;



use dao\noticiasDao;
use controladores\Login;
class NoticiasUtils {
	
	/*
	 * 
	 */
	function enviarNotificacionesMail($mails = null,$galeria = null,$notificar_contenido = null,$contenido = null){

		$result = array();
		
		if(!empty($mails)){
			foreach($mails as $mail){
				$result[] = $this->enviarMail($notificar_contenido,$contenido,Utils::stringMin($mail));
			}
		}
		return $result;
		
	}
		

	/**
	 * 
	 * @param string $notificar_contenido
	 * @param string $attachment
	 * @param unknown $mailto
	 * @return Ambigous <boolean, string>
	 */
	function enviarMail($notificar_contenido = null,$attachment = null,$mailto){
	
		$mail = new \PHPMailer();
		//Definir que vamos a usar SMTP
		$mail->IsSMTP();
		//Esto es para activar el modo depuración. En entorno de pruebas lo mejor es 2, en producción siempre 0
		// 0 = off (producción)
		// 1 = client messages
		// 2 = client and server messages
		$mail->SMTPDebug  = 0;
		//Ahora definimos gmail como servidor que aloja nuestro SMTP
		$mail->Host       = 'smtp.gmail.com';
		//El puerto será el 587 ya que usamos encriptación TLS
		$mail->Port       = 587;
		//Definmos la seguridad como TLS
		$mail->SMTPSecure = 'tls';
		//Tenemos que usar gmail autenticados, así que esto a TRUE
		$mail->SMTPAuth   = true;
		//Definimos la cuenta que vamos a usar. Dirección completa de la misma
		$mail->Username   = "mario@fcf.cat";
		//Introducimos nuestra contraseña de gmail
		$mail->Password   = "corredera86";
		//Definimos el remitente (dirección y, opcionalmente, nombre)
		$mail->SetFrom('premsa@fcf.cat', 'Premsa FCF');
		//Esta línea es por si queréis enviar copia a alguien (dirección y, opcionalmente, nombre)
		$mail->AddReplyTo('premsa@fcf.cat','Federació Catalana de Futbol');
		//Y, ahora sí, definimos el destinatario (dirección y, opcionalmente, nombre)
		$mail->AddAddress($mailto,'Mario Corredera Verdejo');
		//Definimos el tema del email
		setlocale(LC_ALL,"es_ES");
		$data =  strftime("%A %d de %B de %Y");
		$mail->Subject = "Notificació Noticia FCF.CAT ".$data;
		$mail->Body = "CONTENIDO EMAIL";
		//Para enviar un correo formateado en HTML lo cargamos con la siguiente función. Si no, puedes meterle directamente una cadena de texto.
		//$mail->MsgHTML(file_get_contents('correomaquetado.html'), dirname(ruta_al_archivo));
		//Y por si nos bloquean el contenido HTML (algunos correos lo hacen por seguridad) una versión alternativa en texto plano (también será válida para lectores de pantalla)
		$mail->AltBody = 'This is a plain-text message body';
		
		/* COMPROBAR */
		/*adjuntamos zip con la galeria asociada si existe*/
		
		//$mail->addattachment($crear_zip['fichero'],'imatges_galeria.zip');
		/* */
		$contenido = array_filter(explode("&",$attachment));
		
		if($notificar_contenido == "true"){
			$zip = $this->crearZip($contenido);
			$mail->addattachment(RUTA_UPLOAD_CONTENIDO."contenido/".$zip['fichero'],$zip['fichero']);
		}
		//Enviamos el correo
		if(!$mail->Send()) {
			$aux['mail'] = $mailto;
			$aux['result'] = false;
			$aux['mensaje'] = $mail->ErrorInfo;
		} else {
			$aux['mail'] = $mailto;
			$aux['result'] = true;
		}
		return $aux;
	}
	
	/**
	 * CREA ZIP CARPETA GALERIAS SELECCIONADA
	 */
	function crearZip($contenido){
	
		$rootPath = RUTA_UPLOAD_CONTENIDO."contenido/";
		$archiveName = Utils::randomString(10 ,false,false,false).".zip";
	
		// initialize the ZIP archive
		$zip = new \ZipArchive;
		$zip->open(RUTA_UPLOAD_CONTENIDO."contenido/".$archiveName, \ZipArchive::CREATE);
	
		// let's iterate
		foreach ($contenido as $file) {
				$zip->addFile($rootPath.$file,$file);
		}
		// close the zip file
		if (!$zip->close()) {
			$aux['result'] = false;
		} else {
			$aux['result'] = true;
			$aux['fichero'] = $archiveName;
		}
		return $aux;
	}
	
	
	/**
	 * Crea un tweet de notificacion conforme la noticia se ha creado
	 * recibe un parametro true/false
	 */
	function enviarNotificacionTwitter($not = null,$msg){
	
		if($not == true){
			$consumerKey = 'mRgV3YeOlp1ZbOpJIzZgBHFxt';
			$consumerSecret = 'pGOrIfWFiQdpKxS5rorgMGLSYB7FjdfYgA5EKKNEqgwApmsaFP';
			$accessToken = '2906144561-1rLPy5ll5I3TppHiHclA8FXsgPyDOJg3AW1ohPi';
			$accessTokenSecret = '6jAFUU6IjpGJTr0Rn0TJqAzO5O86uDluR46qh8cBpZxGy';
				
			// Create object
			$tweet = new \TwitterOAuth($consumerKey, $consumerSecret, $accessToken, $accessTokenSecret);
				
			// Check for 140 characters
			if(strlen($msg) <= 140){
				$tweet->post('statuses/update', array('status' => $msg));
			}
			if($tweet->http_code == 200){
				return true;
			}
				
		}else{
			return false;
		}
	}
	
	/*
	 * 
	 */
	function guardarRegistroTwitter($cod_noticia,$texto){
		$noticiasDao = new noticiasDao();
		$data = new \stdClass();
		$data->cod_noticia = $cod_noticia;
		$data->texto = $texto;
		$data->usuario = Login::usuario()->id;
		return $noticiasDao->insertNotificacionTwitter($data);
	}
	
	/*
	 * 
	 */
	function guardarRegistroEmail($cod_noticia,$texto,$documentos,$mails,$result){
		$noticiasDao = new noticiasDao();
		$data = new \stdClass();
		$data->cod_noticia = $cod_noticia;
		$data->texto = $texto;
		$data->contenido = $documentos;
		$data->mails = $mails;
		$data->result = $result;
		$data->usuario = Login::usuario()->id;
		return $noticiasDao->insertNotificacionEmails($data);
	}
	
	
	/*
	 * Devuelve los valores para montar un listado deplegable con el plugin typeahead
	 */
	function listadoDesplegable($info){
		$aux = array();
		foreach($info as $key=>$value){
			$data = new \stdClass();
			$data->id = $value->id;
			$data->name = $value->nom;
			$aux[] = $data;
		}
		return $aux;
	}
	
		
	
}

?>
